package com.hsp.demo_08_object_test;

public class Demo_08 {
    public static void main(String[] args) {
        /*
        要求：
            1、在上面类的基础上扩展 新类： CheckingAccount 对每次存款和取款都收取1美元的手续费。
            分析：1、因为是扩展，所以需继承之前的类
            2、扩展前一个练习的BankAccount类，新类SavingAccount每个月都有利息产生（earnMonthlyInterest
         方法被调用），并且有每月三次免手续费的存款或取款。
                在earnMonthlyInterest方法中重置交易计数。
                要有两个属性：一个是当前月，一个是交易次数
                如果当前月的交易次数大于3次，则需要收手续费
                如果当前月的交易次数小于等于3次，则不需要
         */
        BankAccount c1 = new CheckingAccount(500);
        c1.deposit(200);
        System.out.println(c1.getBalance());
        c1.withdraw(100);
        System.out.println(c1.getBalance());
    }
}

class CheckingAccount extends BankAccount{

    public CheckingAccount(){}

    public CheckingAccount(double balance){
        super(balance);
    }

    @Override
    public void deposit(double amount) {
        //存钱需要收取手续费,即账户上需要减少一块钱
        super.deposit(amount);
        super.withdraw(1);
    }

    @Override
    public void withdraw(double amount) {
        super.withdraw(amount);
        super.withdraw(1);
    }
}

class BankAccount{
    private double balance;

    public BankAccount(){}

    public BankAccount(double initialBalance){
        this.balance = initialBalance;
    }

    public void deposit(double amount){
        balance += amount;
    }

    public void withdraw(double amount){
        balance -= amount;
    }

    public double getBalance() {
        return balance;
    }

    public void setBalance(double balance) {
        this.balance = balance;
    }
}